# 作用域的四个层次
# 1. Local（局部作用域）
# def func():
#     x = 10  # 局部变量
#     print(x)  # 10
# func()
# print(x)  # 报错：NameError，x不存在于全局作用域


# 2. Enclosing（嵌套函数外层作用域）
def outer():
    y = 20
    def inner():
        print(y)  # 访问外层作用域的y
    inner()

outer()  # 输出 20


# 3. Global（全局作用域）
# z = 30  # 全局变量
# def func():
#     global z
#     # 没有global的指定 z相当于定义了一个局部变量
#     # 有global的指定 z是全局变量
#     z = 40
# func()
# print(z)  # 40

# 4. Built-in（内置作用域）
# print(len)
# def func():
#     len = "局部变量"
#     print(len)    # 输出"局部变量"
# func()
#
# print(len)

